import pandas as pd
from openpyxl import Workbook


def split_excel_by_class():
    # 读取 Excel 文件，指定第二行为表头
    file_path = '1.xlsx'
    df = pd.read_excel(file_path, header=1)

    # 打印所有列名
    print("数据的所有列名：", df.columns)

    # 检查是否存在 '班级' 列
    if '班级' not in df.columns:
        print("数据中不存在 '班级' 列，请检查文件。")
        return

    # 创建新的工作簿
    wb = Workbook()
    # 删除默认创建的工作表
    default_sheet = wb.active
    wb.remove(default_sheet)

    # 生成班级列表，22 级 1 班到 24 级 9 班
    classes = []
    for grade in range(22, 25):
        for class_num in range(1, 10):
            classes.append(f'{grade}级{class_num}班')
    print(classes, 'classes')

    for class_name in classes:
        print(class_name, 'sssss')

        # 筛选当前班级的数据
        class_df = df[df['班级'] == class_name]
        if not class_df.empty:
            # 创建以班级命名的工作表
            ws = wb.create_sheet(title=class_name)
            # 写入表头
            ws.append(class_df.columns.tolist())
            # 逐行写入数据
            for row in class_df.values.tolist():
                ws.append(row)

    # 保存新的 Excel 文件
    output_file = 'output.xlsx'
    wb.save(output_file)


if __name__ == "__main__":
    split_excel_by_class()
